/*
一维差分：
    给定数组arr[n]，m次操作，每次使区间内各元素同时加一个数，如(2,4,5) <=> arr[2]+=5,arr[3]+=5,arr[4]+=5。1次询问，问最后的arr数组。
*/

#include <bits/stdc++.h>
using namespace std;
const int n = 1e3;
int d[n];
void add(int L, int R, int val)
{
    d[L] += val;
    d[R + 1] -= val;
}
int main()
{
    int arr[5] = {1, 3, 7, 5, 2};
    add(2, 4, 5);
    add(1, 3, 2);
    add(0, 2, -3);
    for (int i = 1; i < 5; i++)
    {
        d[i] += d[i - 1];
    }
    for (int i = 0; i < 5; i++)
    {
        arr[i] += d[i];
        cout << arr[i] << ' ';
    }
    cout << endl;
    memset(d, 0, sizeof(d));
    return 0;
}
